草庐IT

SciPy 插值

全部标签

python - 如何在 scipy.optimize 函数上强制执行更大的步骤?

我有一个函数compare_images(k,a,b)比较两个二维数组a和b在函数内部,我将sigma=k的gaussian_filter应用到a我的想法是估计我必须多少平滑图像a以使其与图像b相似问题是我的函数compare_images只会在k变化超过0.5时返回不同的值,如果我这样做fmin(compare_images,init_guess,(a,b)它通常卡在init_guess值上。我认为问题是fmin(和minimize)往往从非常小的步骤开始,在我的例子中,这将为重现完全相同的返回值compare_images,所以该方法认为它已经找到了最小值。它只会尝试几次。有没有办

python - 使用 scipy.spatial.Delaunay 代替 matplotlib.tri.Triangulation 的内置版本

似乎matplotlib.tri.Triangulation使用了一个有缺陷且可能不正确的Delaunay三角剖分实现,该三角剖分将被qHull取代.我正在尝试使用mpl_toolkits.mplot3d.plot_trisurf()绘制trisurf并遇到一堆无用的异常(IndexError和主要是KeyError,没有指出到底出了什么问题)。因为scipy.spatial.Delaunay已经使用了qHull,我想知道是否有办法构建一个matplotlib.tri.Triangulation对象以与一起使用mpl_toolkits.mplot3d.plot_trisurf()使用s

Python Scipy Optimization.minimize 使用 SLSQP 显示最大化结果

我正在学习使用scipy.optimize.minimize优化多元约束非线性问题,但收到了奇怪的结果。我的问题:minimizeobjfunobjfunx*yconstraints0我的代码:fromscipyimportoptimizedeffunc(x):returnx[0]*x[1]bnds=((0,100),(0,5))cons=({'type':'eq','fun':lambdax:x[0]+x[1]-5})x0=[0,0]res=optimize.minimize(func,x0,method='SLSQP',bounds=bnds,constraints=cons)收到

python - 使用 NumPy/SciPy 的向量值函数插值

有没有办法使用NumPy对向量值函数进行插值?/SciPy?有很多针对标量值函数的产品,我想我可以使用其中之一来分别估计向量的每个分量,但有没有更有效的方法?具体来说,我有一个函数f(x)=V,其中x是标量,V是向量。我还有一个xs及其对应的Vs的集合。我想用它来插入和估计任意x的V。 最佳答案 插值函数scipy.interpolate.interp1d也适用于插值的向量值数据(尽管不适用于向量值参数数据)。因此,只要x是标量,就可以直接使用。以下代码是对thescipydocumentation中给出的示例的轻微扩展:>>>fr

python - Scipy,差异进化

问题是,我正在尝试为我的目的设计拟合程序,并希望使用scipy的差分进化算法作为初始值的一般估计量,然后将其用于LM算法以实现更好的拟合。我想用DE最小化的函数是分析定义的非线性函数和一些实验值之间的最小二乘法。我坚持的一点是功能设计。正如scipy引用中所述:“函数必须采用f(x,*args)的形式,其中x是一维数组形式的参数,args是完全指定函数所需的任何附加固定参数的元组"有一个丑陋的代码示例,我只是为了说明目的而编写的:deffunc(x,*args):"""args[0]=xargs[1]=y"""result=0foriinrange(len(args[0][0])):r

python - 为什么 SciPy 使用 Fisher 精确检验对极小的 p 值返回负 p 值?

我注意到如果p值极小,SciPy中的Fisher精确检验会返回负p值:>>>importscipyassp>>>importscipy.stats>>>x=[[48,60],[3088,17134]]>>>sp.stats.fisher_exact(x)(4.4388601036269426,-1.5673906617053035e-11)在R中,使用相同的2x2列联表:>a=matrix(c(48,60,3088,17134),nrow=2)>fisher.test(a)p-value=6.409e-13我的问题是1)为什么SciPy返回负p值?2)如何使用SciPy生成正确的p值?

Python SciPy 卷积与 fftconvolve

我知道一般来说,当数组相对较大时,FFT和乘法通常比直接卷积运算更快。但是,我正在将一个非常长的信号(比如1000万点)与一个非常短的响应(比如1000点)进行卷积。在这种情况下,fftconvolve似乎没有多大意义,因为它强制第二个数组的FFT与第一个数组的大小相同。在这种情况下直接进行卷积会更快吗? 最佳答案 看看我在这里做的比较:http://scipy-cookbook.readthedocs.io/items/ApplyFIRFilter.html您的情况可能接近使用普通卷积和使用基于FFT的卷积之间的过渡,因此您最好的

python - 通过阈值将 SciPy 层次树状图切割成簇

我正在尝试使用SciPy的dendrogram方法根据阈值将我的数据分成多个簇。但是,一旦我创建了一个树状图并检索了它的color_list,列表中的条目就比标签少了一个。或者,我尝试使用fcluster,其阈值与我在dendrogram中确定的相同;但是,这不会呈现相同的结果——它给了我一个集群而不是三个。这是我的代码。importpandasdata=pandas.DataFrame({'total_runs':{0:2.489857755536053,1:1.2877651950650333,2:0.8898850111727028,3:0.77750321282732704,4

python - 使用 scipy 最小化多变量函数。导数未知

我有一个函数,它实际上是对另一个程序(一些Fortran代码)的调用。当我调用此函数(run_moog)时,我可以解析4个变量,并返回6个值。这些值都应该接近于0(为了最小化)。但是,我将它们组合成这样:np.sum(results**2)。现在我有一个标量函数。我想最小化这个函数,即让np.sum(results**2)尽可能接近于零。注意:当此函数(run_moog)接受4个输入参数时,它会为依赖于这些参数的Fortran代码创建一个输入文件。我从thescipydocs尝试了几种优化方法.但没有一个按预期工作。最小化应该能够限制4个变量。这是一个尝试:fromscipy.opti

python - scipy 中最小二乘函数的雅可比行列式的方法签名

任何人都可以提供一个向leastsquaresfunction提供雅可比矩阵的示例吗?在scipy中?我无法弄清楚他们想要的方法签名-他们说它应该是一个函数,但很难弄清楚这个函数应该以什么顺序接受哪些输入参数。 最佳答案 这是我使用的指数衰减拟合:importnumpyasnpfromscipy.optimizeimportleastsqdeff(var,xs):returnvar[0]*np.exp(-var[1]*xs)+var[2]deffunc(var,xs,ys):returnf(var,xs)-ysdefdfunc(va